Communications over a network between two computers, for example, a client and a server, can be implemented using a variety of known communication protocols. Typically, the client communicates with the server to download content from the server over the network. For example, the server may host one or more applications accessible by the client. Furthermore, the client may communicate with the server via a proxy that is typically a security gateway, such as a router or firewall, through which content from the server passes. Additionally, the server may include a firewall to prohibit unauthorized communications to and from the server. The client gains access to the server and the content of the server through the security of the proxy and the firewall of the server. Often, however, the network connection traversing to the server via a proxy is susceptible to breakdown. For instance, a wireless connection between a client and a proxy is often unreliable. In other cases, the network connection is intermittent. As such, a connection can be lost when one enters an elevator or tunnel and may only be restored following one's exit from the elevator or tunnel.
If an established communication session between the client and the server computer abnormally terminates, the client generally has to re-establish the connection by starting a new communication session. To begin the new communication session, the user typically has to retransmit authentication credentials, such as a login/password pair, to the proxy and the server computer so that the user can be authorized for the new communication session. This retransmission of the authentication credentials of a user across multiple communication sessions repeatedly exposes the authentication credentials of that user to potential attackers, thereby decreasing the level of security of the authentication credentials. Furthermore, if an attacker bypasses the security of the proxy or the firewall of the server, the attacker may gain access to the content of the server without encountering additional security. In addition, having the user re-enter authentication credentials is often a slow process that may result in user frustration and inefficiency.
When communicating over a network connection using many current protocols, data packets are lost when the network connection is disrupted. For example, when communicating via a standard TCP network connection, data buffers are typically flushed upon disruption of the connection. As such, when the network connection is restored, a networked application, such as a user session on a server, is unable to resume where it was prior to disruption. Typically an error message is displayed, adding user frustration to inconvenience. Moreover, communicating over a network with many protocols often requires frequent re-establishment of the transport connection. For example, using HTTP, either on its own or on conjunction with a proxy protocol, to browse a website over a standard TCP connection requires, in addition to a new HTTP connection for each resource, the closure of a previous TCP/proxy protocol connection and the opening of a new TCP/proxy protocol connection for each resource.
Thus, it is desirable to provide a technique for re-establishing a communication session between a client computer and a server computer without requiring repeated transmission of the client's authentication credentials and while increasing the protection of the server from an unauthorized user. Improved systems and methods are needed for re-establishing a communication session between a client computer and a server computer without repeatedly transmitting the authentication credentials to securely traverse multiple network components.